home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / Projects / Tutorial Material / Zone Tutorial / Structure Examples / 5. Struct1 < prev    next >
Lisp/Scheme  |  1998-10-26  |  2KB  |  58 lines

  1. ; STRUCT1 -  solo piano (phrase 1)
  2.  
  3. (setq tonal (activate-tonality (chromatic c 3)))
  4. (setq tonal1 (activate-tonality (chromatic c 4)))
  5. (setq tonal2 (activate-tonality (chromatic c 5)))
  6. (setq tonal3 (activate-tonality (whole-tone c 6)))
  7.  
  8. (setq sym1 '(l k a c))
  9. (setq sym2 (gen-random 0.4 8 sym1))
  10. (setq sym3 '(= b c e f lc -b ka -b -c))
  11. (setq sym4 (gen-random-variate 0.4 0.07 -3 3 sym3))
  12.  
  13. ; Nigel has been using tick value 96 for 1/4 note. 
  14. ; Because Nigel often mixes ticks and ratios, the function must take
  15. ; both cases into account.
  16.  
  17. (defun use-nigel-ticks (l)
  18.   (let (out)
  19.     (dolist (x l)
  20.       (if (is-length-symbol x)
  21.         (push x out)
  22.         (push (* x 5) out)))
  23.     (nreverse out)))
  24.  
  25. (setq rhy1 (use-nigel-ticks '(1/8 1/8 -1/8t 1/8t 1/8t 1/16 1/16 1/16 1/16)))
  26. (setq rhy2 (use-nigel-ticks (gen-loop '((1 5 1) (2 5 1))
  27.                      '(-1/8-5 1/8-5 1/8-5 1/8-5 1/8-5 1/8-5))))
  28. (setq rhy3 (use-nigel-ticks '(1/2 1/16 -1/2)))
  29. (setq rhy4 (use-nigel-ticks (gen-loop '((1 4 1) (2 5 2)) '(-1/32 1/32 1/32 1/32 1/32))))
  30.  
  31. (def-symbol
  32.   p1 sym2
  33.   p2 sym1
  34.   p3 sym4
  35.   p4 sym3
  36.   p5 '(aelsx)
  37.   p6 (find-change (gen-fibonacci-trans 4 sym1 sym2))                                    
  38. )
  39.  
  40. (def-length
  41.   p1 (use-nigel-ticks '(1/16 1/16 1/16 1/16 -1/16 1/16 -1/16 1/16 
  42.                         1/16 1/16 1/16 -1/8 1/16 1/16))
  43.   p2 (use-nigel-ticks '(1/8 -1/8 1/8 1/8 -1/8 1/8 1/8 1/8))
  44.   p3 rhy1
  45.   p4 rhy2
  46.   p5 rhy3
  47.   p6 rhy4
  48. )
  49.  
  50. (compile-song-p "ccl;output:" 1/4 "piano"
  51. ;             !---!---!---!---!---!---!---!---!---
  52. p1 tonal     "    ---  -   --          -         "
  53. p2 tonal3    "      ----  -        -- -          "
  54. p3 tonal1    "          ---          --          "
  55. p4 tonal2    "  --           ---        --       "
  56. p5 tonal     "--                              -  "
  57. p6 tonal2    "                  ---       ----   "                
  58. )